/**
 * 在Java中，类（Class）、对象（Object）和引用（Reference）是面向对象编程的核心概念，它们之间存在紧密的关系：

    1. 类（Class）：
    - 类是现实世界中某些具有共同属性和行为的事物的抽象。它定义了一组特定的属性（变量）和方法（函数），这些属性和方法描述了该类的对象会如何表现和行为。
    - 类是一个蓝图或模板，它规定了创建对象时对象的结构和行为。

    2. 对象（Object）：
    - 对象是根据类的定义创建的实例。每个对象都拥有类中定义的属性和方法。
    - 通过使用类名后跟`new`关键字和构造函数，可以在内存中创建对象。例如，如果有一个名为`Car`的类，可以使用`Car myCar = new Car();`来创建一个`Car`类的对象`myCar`。

    3. 引用（Reference）：
    - 引用是指向对象的指针。在Java中，变量实际上是对象的引用，而不是对象本身。
    - 当你创建一个对象并将其赋值给一个变量时，这个变量就包含了指向该对象内存地址的引用。例如，在`Car myCar = new Car();`中，`myCar`是一个引用，它指向了堆内存中新创建的`Car`对象。

    4. 关系：
    - 类与对象：类是定义对象的模板。对象是类的实例，是根据类的定义在内存中创建的具体实体。
    - 对象与引用：对象实际存储在堆内存中，而引用则是指向这些对象的指针，存储在栈内存中。通过引用，你可以访问和操作对象。
    - 类与引用：类定义了引用的类型。当你声明一个引用变量时，你指定了它指向的对象的类类型。

    5. 内存分配：
    - 当你声明一个引用变量时（如`Car myCar;`），这个变量被分配在栈内存中，它包含了指向堆内存中对象的指针。
    - 当你使用`new`关键字创建对象时（如`new Car()`），对象被分配在堆内存中。

    6. 垃圾回收：
    - Java具有垃圾回收机制，它会定期检查不再被任何引用指向的对象，并释放这些对象占用的内存。如果一个对象的所有引用都被设置为`null`或者超出作用域，那么这个对象就变得不可达，垃圾回收器会在适当的时候回收它。

    7. 多态性：
    - 引用可以多态地指向多种类型的对象，只要这些对象是同一个类或者有继承关系。这意味着你可以使用基类的引用来指向派生类的对象。

    理解类、对象和引用之间的关系对于掌握Java的面向对象编程至关重要，它们是构建Java程序的基础。

*/
public class ClassInstanceAndRef {
    public static void main(String[] args) {
        Merchandise m = new Merchandise();
        Merchandise1 m1 = new Merchandise1();

        // Merchandise merchandise = m;
        // 即使Merchandise和Merchandise1的内容一摸一样，那也是不同的类，不同类的引用不可以互相赋值。
        // 因为它们本质上是不同的对象。
        // Merchandise merchandise = m1;
    }
}
